home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / programm.ing / m2posx10.zoo / m2posix.10 / src / portab.dpp < prev    next >
Encoding:
Modula Definition  |  1993-12-02  |  8.5 KB  |  350 lines

  1. DEFINITION MODULE PORTAB;
  2. __DEF_SWITCHES__
  3.  
  4. (*
  5. Yet another system-dependent Module.
  6.  
  7. UK __DATE__ __TIME__
  8. modified by hk
  9. *)
  10.  
  11.  
  12. #ifdef FTLM2
  13. FROM SYSTEM IMPORT BYTE,WORD,LONGWORD,ADDRESS;
  14. #else
  15. IMPORT SYSTEM;
  16. #endif
  17.  
  18.  
  19. (* fixed Types *)
  20.  
  21. TYPE WORDSETRANGE = [0..15];
  22.  
  23. #if (defined LPRM2)
  24. TYPE UNSIGNEDBYTE = SYSTEM.BYTE;
  25.      SIGNEDBYTE   = SYSTEM.BYTE;
  26.      ANYBYTE      = SYSTEM.BYTE;
  27.  
  28.      UNSIGNEDWORD = CARDINAL;
  29.      SIGNEDWORD   = INTEGER;
  30.      ANYWORD      = SYSTEM.WORD;
  31.  
  32.      UNSIGNEDLONG = LONGCARD;
  33.      SIGNEDLONG   = LONGINT;
  34.      ANYLONG      = LONGINT;
  35.  
  36.      WORDSET = SET OF WORDSETRANGE;
  37. (*
  38.      BYTESET = ANYBYTE;
  39.      LONGSET = ANYLONG;
  40. *)
  41. TYPE
  42.   UNSIGNED = LONGCARD; (* biggest unsigned integral type (ISO.CARDINAL) *)
  43.   SIGNED   = LONGINT;  (* biggest signed integral type (ISO.INTEGER) *)
  44.  
  45. CONST
  46.   MINUNSIGNED = MIN(LONGCARD);
  47.   MAXUNSIGNED = MAX(LONGCARD);
  48.  
  49.   MINSIGNED = MIN(LONGINT);
  50.   MAXSIGNED = MAX(LONGINT);
  51. #elif (defined SPCM2)
  52. TYPE UNSIGNEDBYTE = SYSTEM.BYTE;
  53.      SIGNEDBYTE   = SYSTEM.BYTE;
  54.      ANYBYTE      = SYSTEM.BYTE;
  55.  
  56.      UNSIGNEDWORD = CARDINAL;
  57.      SIGNEDWORD   = INTEGER;
  58.      ANYWORD      = SYSTEM.WORD;
  59.  
  60.      UNSIGNEDLONG = LONGCARD;
  61.      SIGNEDLONG   = LONGINT;
  62.      ANYLONG      = LONGINT;
  63.  
  64.      WORDSET = SET OF WORDSETRANGE;
  65. (*
  66.      BYTESET = ANYBYTE;
  67.      LONGSET = SET OF [0..31];
  68. *)
  69. TYPE
  70.   UNSIGNED = LONGCARD; (* biggest unsigned integral type (ISO.CARDINAL) *)
  71.   SIGNED   = LONGINT;  (* biggest signed integral type (ISO.INTEGER) *)
  72.  
  73. CONST
  74.   MINUNSIGNED = MIN(LONGCARD);
  75.   MAXUNSIGNED = MAX(LONGCARD);
  76.  
  77.   MINSIGNED = MIN(LONGINT);
  78.   MAXSIGNED = MAX(LONGINT);
  79. #elif (defined HM2) || (defined XHM2)
  80. TYPE UNSIGNEDBYTE = [0..255];
  81.      SIGNEDBYTE   = [-128..127];
  82.      ANYBYTE      = SYSTEM.BYTE;
  83.  
  84.      UNSIGNEDWORD = SHORTCARD;
  85.      SIGNEDWORD   = SHORTINT;
  86.      ANYWORD      = SYSTEM.WORD;
  87.  
  88.      UNSIGNEDLONG = LONGCARD;
  89.      SIGNEDLONG   = LONGINT;
  90.      ANYLONG      = SYSTEM.LONG;
  91.  
  92.      WORDSET = PACKEDSET OF WORDSETRANGE;
  93. (*
  94.      BYTESET = PACKEDSET OF [0..7];
  95.      LONGSET = PACKEDSET OF [0..31];
  96. *)
  97. TYPE
  98.   UNSIGNED = LONGCARD; (* biggest unsigned integral type (ISO.CARDINAL) *)
  99.   SIGNED   = LONGINT;  (* biggest signed integral type (ISO.INTEGER) *)
  100.  
  101. CONST
  102.   MINUNSIGNED = MIN(LONGCARD);
  103.   MAXUNSIGNED = MAX(LONGCARD);
  104.  
  105.   MINSIGNED = MIN(LONGINT);
  106.   MAXSIGNED = MAX(LONGINT);
  107. #elif (defined MM2)
  108. TYPE UNSIGNEDBYTE = SYSTEM.BYTE;
  109.      SIGNEDBYTE   = SYSTEM.BYTE;
  110.      ANYBYTE      = SYSTEM.BYTE;
  111.  
  112.      UNSIGNEDWORD = SHORTCARD;
  113.      SIGNEDWORD   = SHORTINT;
  114.      ANYWORD      = SYSTEM.WORD;
  115.  
  116.      UNSIGNEDLONG = LONGCARD;
  117.      SIGNEDLONG   = LONGINT;
  118.      ANYLONG      = SYSTEM.LONGWORD;
  119.  
  120.      WORDSET = PACKEDSET OF WORDSETRANGE;
  121. (*
  122.      BYTESET = PACKEDSET OF [0..7];
  123.      LONGSET = SET OF SYSTEM.BITNUM[0..31];
  124. *)
  125. TYPE
  126.   UNSIGNED = LONGCARD; (* biggest unsigned integral type (ISO.CARDINAL) *)
  127.   SIGNED   = LONGINT;  (* biggest signed integral type (ISO.INTEGER) *)
  128.  
  129. CONST
  130.   MINUNSIGNED = MIN(LONGCARD);
  131.   MAXUNSIGNED = MAX(LONGCARD);
  132.  
  133.   MINSIGNED = MIN(LONGINT);
  134.   MAXSIGNED = MAX(LONGINT);
  135. #elif (defined MSM2)
  136. TYPE (*
  137.      UNSIGNEDBYTE = CHAR;
  138.      SIGNEDBYTE   = CHAR;
  139.      ANYBYTE      = CHAR;
  140.  
  141.      UNSIGNEDWORD = CARDINAL;
  142.      SIGNEDWORD   = INTEGER;
  143.      ANYWORD      = WORD;
  144.  
  145.      UNSIGNEDLONG = LONGCARD;
  146.      SIGNEDLONG   = LONGINT;
  147.      ANYLONG      = LONG;
  148.  
  149.      BYTESET = CHAR;
  150.      LONGSET = SET OF [0..31];
  151.      *)
  152.      WORDSET = SET OF WORDSETRANGE;
  153. #elif (defined FSTM2)
  154. TYPE UNSIGNEDBYTE = SYSTEM.BYTE;
  155.      SIGNEDBYTE   = SYSTEM.BYTE;
  156.      ANYBYTE      = SYSTEM.BYTE;
  157.  
  158.      UNSIGNEDWORD = CARDINAL;
  159.      SIGNEDWORD   = INTEGER;
  160.      ANYWORD      = SYSTEM.WORD;
  161.  
  162.      UNSIGNEDLONG = LONGCARD;
  163.      SIGNEDLONG   = LONGINT;
  164.      ANYLONG      = LONGINT;
  165.  
  166.      WORDSET = SET OF WORDSETRANGE;
  167. (*
  168.      BYTESET = SYSTEM.BYTE;
  169.      LONGSET = SET OF [0..31];
  170. *)
  171. TYPE
  172.   UNSIGNED = LONGCARD; (* biggest unsigned integral type (ISO.CARDINAL) *)
  173.   SIGNED   = LONGINT;  (* biggest signed integral type (ISO.INTEGER) *)
  174. #elif (defined SDSM2)
  175. TYPE UNSIGNEDBYTE = SYSTEM.BYTE;
  176.      SIGNEDBYTE   = SYSTEM.BYTE;
  177.      ANYBYTE      = SYSTEM.BYTE;
  178.  
  179.      UNSIGNEDWORD = CARDINAL;
  180.      SIGNEDWORD   = INTEGER;
  181.      ANYWORD      = SYSTEM.WORD;
  182.  
  183.      UNSIGNEDLONG = LONGINT; (* no LONGCARD *)
  184.      SIGNEDLONG   = LONGINT;
  185.      ANYLONG      = LONGINT;
  186.  
  187.      WORDSET = SET OF [0..15];
  188. (*
  189.      BYTESET = SYSTEM.BYTE;
  190.      LONGSET = ANYLONG;
  191. *)
  192. TYPE
  193.   UNSIGNED = LONGINT; (* biggest unsigned integral type (ISO.CARDINAL) *)
  194.   SIGNED   = LONGINT; (* biggest signed integral type (ISO.INTEGER) *)
  195. #elif (defined ANAM2) || (defined XAM2)
  196. TYPE UNSIGNEDBYTE = SYSTEM.BYTE;
  197.      SIGNEDBYTE   = SYSTEM.BYTE;
  198.      ANYBYTE      = SYSTEM.BYTE;
  199.  
  200.      UNSIGNEDWORD = SYSTEM.SHORTWORD;
  201.      SIGNEDWORD   = SYSTEM.SHORTWORD;
  202.      ANYWORD      = SYSTEM.SHORTWORD;
  203.  
  204.      UNSIGNEDLONG = CARDINAL;
  205.      SIGNEDLONG   = INTEGER;
  206.      ANYLONG      = SYSTEM.WORD;
  207.  
  208.      WORDSET = SET OF WORDSETRANGE;
  209. (*
  210.      BYTESET = SET OF [0..7];
  211.      LONGSET = SET OF [0..31];
  212. *)
  213. TYPE
  214.   UNSIGNED = CARDINAL; (* biggest unsigned integral type (ISO.CARDINAL) *)
  215.   SIGNED   = INTEGER;  (* biggest signed integral type (ISO.INTEGER) *)
  216. #elif (defined TDIM2)
  217. TYPE UNSIGNEDBYTE = SYSTEM.BYTE;
  218.      SIGNEDBYTE   = SYSTEM.BYTE;
  219.      ANYBYTE      = SYSTEM.BYTE;
  220.  
  221.      UNSIGNEDWORD = CARDINAL;
  222.      SIGNEDWORD   = INTEGER;
  223.      ANYWORD      = SYSTEM.WORD;
  224.  
  225.      UNSIGNEDLONG = LONGCARD;
  226.      SIGNEDLONG   = LONGINT;
  227.      ANYLONG      = SYSTEM.LONGWORD;
  228.  
  229.      WORDSET = SET OF WORDSETRANGE;
  230. (*
  231.      BYTESET = SET OF [0..7];
  232.      LONGSET = SET OF [0..31];
  233. *)
  234. TYPE
  235.   UNSIGNED = LONGCARD; (* biggest unsigned integral type (ISO.CARDINAL) *)
  236.   SIGNED   = LONGINT;  (* biggest signed integral type (ISO.INTEGER) *)
  237.  
  238. CONST
  239.   MINUNSIGNED = MIN(LONGCARD);
  240.   MAXUNSIGNED = MAX(LONGCARD);
  241.  
  242.   MINSIGNED = MIN(LONGINT);
  243.   MAXSIGNED = MAX(LONGINT);
  244. #elif (defined FTLM2)
  245. TYPE UNSIGNEDBYTE = BYTE;
  246.      SIGNEDBYTE   = BYTE;
  247.      ANYBYTE      = BYTE;
  248.  
  249.      UNSIGNEDWORD = CARDINAL;
  250.      SIGNEDWORD   = INTEGER;
  251.      ANYWORD      = WORD;
  252.  
  253.      UNSIGNEDLONG = LONGCARD;
  254.      SIGNEDLONG   = LONGINT;
  255.      ANYLONG      = LONGWORD;
  256.  
  257.      WORDSET = SET OF WORDSETRANGE;
  258. (*
  259.      BYTESET = SET OF [0..7];
  260.      LONGSET = SET OF [0..31];
  261. *)
  262. TYPE
  263.   UNSIGNED = LONGCARD; (* biggest unsigned integral type (ISO.CARDINAL) *)
  264.   SIGNED   = LONGINT;  (* biggest signed integral type (ISO.INTEGER) *)
  265. #elif (defined LM2)
  266. TYPE UNSIGNEDBYTE = SYSTEM.BYTE;
  267.      SIGNEDBYTE   = SYSTEM.BYTE;
  268.      ANYBYTE      = SYSTEM.BYTE;
  269.  
  270.      UNSIGNEDWORD = CARDINAL;
  271.      SIGNEDWORD   = INTEGER;
  272.      ANYWORD      = SYSTEM.WORD;
  273.  
  274.      UNSIGNEDLONG = LONGINT;
  275.      SIGNEDLONG   = LONGINT; (* no LONGCARD *)
  276.      ANYLONG      = LONGINT;
  277.  
  278.      WORDSET = SET OF WORDSETRANGE;
  279. (*
  280.      BYTESET = SET OF [0..7];
  281.      LONGSET = SET OF [0..31];
  282. *)
  283. TYPE
  284.   UNSIGNED = LONGINT; (* biggest unsigned integral type (ISO.CARDINAL) *)
  285.   SIGNED   = LONGINT; (* biggest signed integral type (ISO.INTEGER) *)
  286. #elif (defined TSM2_1) || (defined TSM2_2)
  287. TYPE UNSIGNEDBYTE = SHORTCARD;
  288.      SIGNEDBYTE   = SHORTINT;
  289.      ANYBYTE      = SYSTEM.BYTE;
  290.  
  291.      UNSIGNEDWORD = CARDINAL;
  292.      SIGNEDWORD   = INTEGER;
  293.      ANYWORD      = SYSTEM.WORD;
  294.  
  295.      UNSIGNEDLONG = LONGCARD;
  296.      SIGNEDLONG   = LONGINT;
  297.      ANYLONG      = SYSTEM.LONGWORD;
  298.  
  299.      WORDSET = SET OF WORDSETRANGE;
  300. (*
  301.      BYTESET = SET OF [SHORTCARD(0)..SHORTCARD(7)];
  302.      LONGSET = SET OF [0..31];
  303. *)
  304. TYPE
  305.   UNSIGNED = LONGCARD; (* biggest unsigned integral type (ISO.CARDINAL) *)
  306.   SIGNED   = LONGINT;  (* biggest signed integral type (ISO.INTEGER) *)
  307. #endif
  308.  
  309. (* for open Arrays *)
  310.  
  311. #if (defined FSTM2)  || (defined ANAM2) || (defined LPRM2)  || \
  312.     (defined SPCM2)  || (defined HM2)   || (defined TSM2_1) || \
  313.     (defined TSM2_2) || (defined LM2)   || (defined TDIM2)
  314. TYPE ANYTYPE = SYSTEM.BYTE;
  315. #elif (defined FTLM2)
  316. TYPE ANYTYPE = BYTE;
  317. #elif (defined ISOM2) || (defined MM2)
  318. TYPE ANYTYPE = SYSTEM.LOC;
  319. #else
  320. TYPE ANYTYPE = SYSTEM.WORD;
  321. #endif
  322.  
  323. (* avoiding SYSTEM.ADDRESS *)
  324.  
  325. #ifdef FTLM2
  326. TYPE ANYPOINTER = ADDRESS;
  327. #else
  328. TYPE ANYPOINTER = SYSTEM.ADDRESS;
  329. #endif
  330.  
  331. (* all Purpose Procedure Type *)
  332.  
  333. TYPE ANYPROC = PROCEDURE(ANYPOINTER);
  334.  
  335. (* C-compatible NIL *)
  336.  
  337. #if (defined TDIM2)
  338. CONST NULL = SYSTEM.NULL;
  339. #elif (defined LM2)
  340. CONST NULL = 0H:0H;
  341. #elif (defined FTLM2)
  342. CONST NULL = ADDRESS(LONGCARD(0));
  343. #elif (defined FSTM2)
  344. VAR NULL: ANYPOINTER;
  345. #else
  346. CONST NULL = NIL;
  347. #endif
  348.  
  349. END PORTAB.
  350.